home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Zoom 2
/
Zoom - Release 2 (1996)(Active Software)[!].iso
/
graphics
/
misc
/
smartfractal
/
smartfractal.doc
< prev
next >
Wrap
Text File
|
1995-01-30
|
49KB
|
868 lines
Smart Fractal V1.3
by
Avogadro Simone
V 1.3 release in 30/1/95
USER'S MANUAL
IMPORTANT: THIS PRODUCT IS SHAREWARE, IF YOU USE AND LIKE IT PLEASE SEND
$10 TO THE AUTHOR. IF YOU DO NOT KNOW WHAT SHAREWARE IS, PLEASE READ THE
SHAREWARE.DOC FILE FIRST, YOU FIND IT IN THE SAME ARCHIVE OF THIS FILE.
ALSO NOTE 'REQTOOLS' IS WORK OF NICO FRANCOIS, REGISTERING FOR
'SMARTFRACTAL' YOU DON'T REGISTER FOR 'REQTOOLS'.
INDEX
Chapter 1: The philosophy of the program
1.1 What's a fractal ?
1.2 Introduction to Smartfractal
1.3 What's different (and some background story)
1.4 Some known spots
1.5 Other goodies
Chapter 2: The program's menu
2.1 Project
2.1.1 Informations
2.1.2 Loading/saving files
2.1.3 Importing from other programs
2.1.4 Setting the priority
2.1.5 Exiting the program
2.2 Controls
2.2.1 Graphic controls
2.2.2 Methods tuning
2.2.3 Zoom control
2.2.4 Misc controls
2.2.5 Buffers
2.3 Math
2.3.1 Editing parameters
2.3.2 Selecting the fractal type
2.3.3 Determining the type of math
2.3.4 Regenerating the image
2.4 Colors
2.4.1 File operations
2.4.2 Palette editor
2.4.3 Choosing the rendering methods !!
2.4.4 Cycling
Chapter 3: Other features
3.1 Commands of the toolbar
3.2 Keyboard commands
3.3 Preferences and setup
Chapter 4: Miscellaneous informations
4.1 How to contact the author
4.2 Improvements
4.3 Known bugs
4.4 History
4.5 People I wish to thank
4.6 Bibliography
Chapter 1: The philosophy of the program
This chapter contains all the informations needed to use Smartfractal. It
briefly illustrates the main features of the program and gives the user
tips on how to obtain some beautiful images. Also gives some basic
informations on what the fractals are.
1.1 What's a fractal ?
A fractal is ... Ehrm... It's a fractal! Just kidding, if you don't know
what a fractal is you will still be able to use Smartfractal but maybe you
will not understand the meaning of some of the options. I won't explain in
depth what a fractal is as this would require too much space and this is
not the purpose of this documentation. However there are some simple
things about fractals anyone can understand even without reading whole
(sometimes boring) books of math. First of all the name: Fractals, what
does this name mean? Basically this refers to the fact that measuring the
number of dimensions of one of these 'things' with some modern math techs
(measuring the Hausdorff's dimension) would give a 'weird' number (maybe
an irrational number or a fraction, so 'fractal'). This means that the
thing you see on a 2-dimensional sheet of paper has a different dimension
(Eg.: log(4/3)). Fun, and so? Well, that's difficult to interpret but this
usually derives from the fact that these objects are defined by means of
infinite recursion and so you can cut 1/4 of the object and it will occupy
1/3 (!!!) of the space of the original (that's the case of the Kock's
curve that you can find on the books used in secondary schools). We talked
about recursion, together with infinity it is one of the 'secrets' of
fractals, the beauty of these object derives from the fact that you can
theorically zoom-in forever and always discover new zones, all of them
will look like the ones you saw before but will always be somewhat
different. The graphical representation of fractals is done iterating a
mathematical formula and studying its behaviour for each single point. As
we cannot afford to examine an infinite number of values for each point on
the screen we usually stop after a finite number of iterations, the higher
the number of steps before stopping, the more precise the drawing will be.
The fractals you can explore with Smartfractal are all point-based, this
means that the color of a single point depends only on the behaviour of
that single point. For each point we study the convergence/divergence of a
series defined by the type of fractal and by the point itself, we say that
the point is in the set if the series converges, otherwise we say that
it's out of the set. The deeper we go into the set and the harder will be
to determine if a point generates a series that diverges or converges and
so the higher will be the number of iterations needed to obtain an
acceptable image of that zone.
1.2 Introduction to Smartfractal
The very first time you will run Smartfractal (Smart from now on) you
will probably want to setup the preferences as the default behaviour of
Smart is to use parameters acceptable on the most basic machine (like my
A500 :-), just browse the control menu to set the desidered number of
colors, the correct image size and the most suitable number of iterations,
if you don't know what this means then you'd better read the whole 1st
chapter before beginning for better results. Now go to the colors menu and
set the internal and the external coloring methods (these are peculiar to
Smart!), now choose the fractal type you prefer and save the preferences
in the 'S:' directory, call them 'SmartFractal.prefs'. Done? O.K. You just
finished the basic setup! From now on Smart will start with your
preferences. Maybe you now want to zoom in, if so just click in the center
of the zone you want to zoom, adjust the box size with the gadgets on the
right side and click on the zoom gadget (or select the zoom option in the
control menu), Smart will start to calculate that area. After a certain
number of zooms you will probably decide to zoom out, just select the
unzoom menu! If you cannot find anything beautiful you may decide to
render pre-determined zones, if so just read paragraph 4!
1.3 What's different (and some background story)
What you have been doing up to now was possible even in the most basic
fractal generator, so what does Smart do that others don't? I chose to
write Smart after re-reading a book talking about fractals, the pictures
on that book looked somewhat nicer than the ones I could generate with the
available programs. The main difference was that these pictures were also
colored internally, this gave them a totally different look. I was
disappointed not to have a program to do that, unfortunately the tech used
to color that pictures was really time consuming and would have slowed
down the generation of images to an unacceptable rate even on 68040
machines, so I gave off for some time. Sometime later I happened to look
again at that book and noticed that some figures used a tech to draw the
external part that was quite simple to implement but still I could not
find any program able to do that, what a shame, I thought, but then I had
an idea: Why not to create my own rendering tech for the internal zones
and use the one seen in the book for the external ones ? I began to
program and in less than a week I discovered that my techs worked quite
good, I just had to write everything except from the rendering routines,
but I were so happy that the things went on by themselves. Some months
after (I had some exams to do so I left the project for some time) I
stumbled into a disk with the word "Smartfractal" written on it, I picked
it up, created the user interface, added many features and after a hard
work I came up with the very first beta version. Some month have passed
from that day and with the new versions I have added anything I could find
useful to the program. The program you are using now is the result of a
hard work and so I would appreciate any form of encouragement as I am
human too :-). Just write a postcard if you really do not think to be
worth supporting me ;-( that postcard will let me know that there's people
out there that appreciates my work !
1.4 Some known spots
If you ever happened to read a book about fractals surely you'll have
desired to render the same pictures, apart from the problem mentioned in
the previous paragraph, sometimes the informations on how to get that
pictures are omitted! So I decided to include a directory containing the
preference files needed to render some very known images and some less
known ones that I think to be worth a look! If you want to render such
zones just select 'Prefs->Load spot' and than look into the 'Spots'
directory in the same directory of Smart. You'll notice that the spots are
divided according to the type of fractal. If you want to render an image
never seen on books just enter the 'Volterra' dir and load the 'Seahorse'
spot! Other unknown spots are found in the dirs of the inverted sets (by
now Julia, Mandelbrot and Julia parameter plane), you can also find some
beautyful spots in the 'Weird' directory, these are funny images obtained
by setting 'not too meaningful' parameters, most of them can be considered
interference images, because of this most of the spots in the 'Weird'
drawer should be loaded as preferences.
1.5 Other goodies
On suggestion I added two new directories: 'Colors' and 'Prefs', they do
contain some pre-defined colors for both AGA and non-AGA machines and the
basic preferences for the different types of fractals.
Chapter 2: The program's menu
This chapter explains the meaning and the use of the various voices found
in the menus.
2.1 Project
This menu contains all the controls concerning general operations.
2.1.1 Informations
There are two voices giving informations in this menu. The first one is
"info", it gives informations on the type of fractal that is currently
set, the window being drawn, the number of colors, iterations and the type
of math that had been used to render the current image (useful in case you
are using the "auto" mode), it also states if the selected fractal is
parametric and if it's parametric it shows the value of the parameters,
also present the configuration found by Smart (CPU+FPU+AGA support), also
if you turned buffers on you'll find here the amount of mem taken by
buffers. The second voice giving informations is "about", this shows the
program name, version and revision, a shareware message and my contact
address.
2.1.2 Loading/saving files
With the "project" menu you can either save the current situation
(comprehending all of the preferences) together with the image being
displayed, or save only the current settings (comprehending the window
position, fractal type, math, colors etc.). If you want to save everything
(ie.: Image+settings) choose the "save" option directly in the main menu,
the situation will be saved as a standard iff image followed by a special
field added by Smart to be able to recall the infos about that image. Once
you want to recall that situation just select "load" in the main menu and
the situation will be restored. If you want to save/load just the
situation but not the image choose the voice "prefs" and than select
"load" or "save". Note that you CANNOT recall only the situation (saved
with the "prefs" voice) using the "load" in the main menu, this is the
case of the spots present in this package, you must use the "load spot"
option from the "prefs" voice. Before saving the whole image you can go to
the options an turn iff compression on/off, note that if you are saving to
an autocompressing device you'd better leave it off as the standard iff
compression method is run-length 1, that's quite inefficient. Please note
that if you load an image saved with Smart in an art package and than save
it back the package will NOT retain the information about the fractal so
you won't be able to reload it with Smart, so when you do retouch an image
do not save it over the original or you'll not be able to reload it with
Smart!
2.1.3 Importing from other programs
From V1.3 Smart offers you the option to import from other programs your
favourite spots, just select "Prefs->Import" and pick the data file,
actualy Smart supports the following formats: Mandelmania, MisterM,
Lyapunovia, MandelA (this is now 100% as I had to guess the format :-), if
you use a program other than these you may try anyway to import as many
programs do use Mandelmania-like data files. If this fails and you have
want me to add an other format simply write to me.
2.1.4 Setting the priority
The project menu has a "Priority" voice, it will pop-up a requester
asking a number in range -10..+10, this will be the Smart's priority. The
higher the number, the higher the priority. If you want to do something
else while drawing fractals you'd better set this to -1, this way most
programs will have higher priority and will give prompt response to your
imputs. In some cases it may be useful to set it to lower values but this
should be rare. You may use positive values to speed up a bit, but this
will be a realy little bit. Be aware that setting a priority higher than 5
may cause some you some problems as all standard programs will be
unresponsive while Smart will be calculating (and with fractals this might
take a lot!).
2.1.5 Exiting the program
This is the simplest thing, just select "Quit" and you will see a
requester come up to ask you if you really want to exit, just select yes
and you will terminate Smart. If you are using an Unregistered version
of Smart a requester will pop-up asking you to register (sorry, it's the
rule :-).
2.2 Controls
This menu contains all the controls concerning the aspect of the image
and giving controls about the zoom method and options.
2.2.1 Graphic controls
There are four voices controlling the appearance of the image on the
screen. The first one is "Size", this enables you to set the size of the
image to render, there are 4 predefined sizes and a "custom" option. If
you chose the "custom" option you'll get a requester, if you are using
Kickstart V2.0+ you'll get a ScreenMode requester and you'll be able to
select any available resolution (comprehending any non-standard resolution
available via third-party Monitor Types) and number of colors, please note
that you's better NOT select special modes or non-proportional modes
unless you want to make some weird tests (non-proportional modes are
1280x512 and 640x256), so if you wand to create a backdrop for the
Workbench you should select Laced-Hi Res and than convert the image to
non-laced hi res with a graphic package (Dpaint will do). If you are using
KS1.3 or less you'll get a string requester and you'll be able to enter
the desidered vertical size, the horizontal one will be determined by the
"aspect" option, if you choose a vertical size lesser then or equal to 256
the screen size will be 320x256 and your selection will affect only the
size of the image. If you choose a number greater than 256 you'll also set
the size of the screen, remember that the screen will always have a 5/4
aspect (that's the default on PAL machines), if you choose a vertical size
greater or equal to 400 you'll get a hi-res interlaced screen. The second
voice influencing the image is "aspect", you can select either "square" or
"rectangular" to set the aspect to 4:4 or to 5:4 (like the screen). Than
there is the "colors" option, you can there choose the number of colors on
the screen, please note that Smart will try to open the screen with the
desidered number of colors even if your machine has not the capability to
display them, this will blank the screen if you select 64 colors (that's
extra half bright) or more and hi-res on a non AGA machine with KS1.3,
this causes you not to be able to see anything on the screen, the only
solution is to terminate the drawing pressing Amiga-X and after a while
pressing return, then press Amiga-Q and finally 'Y' to quit Smart.
Surprisingly selecting 256 colors on KS1.3 in low-res will result in just
32 being displayed but 8 being stored in memory, so you can draw and than
store 256 color images that you'll be able to display on AGA machines or
with video enanchers. Please note that some resolutions will slow down
significantly the drawing on non-AGA machine, that's not a bug, it's due
to the internal multiprocessing architecture of the amiga that assigns too
few time to the 680x0 (ie.: that's the case of 16 color hi-res where the
machine almost stops). Then there is the "title" toggle, with this one you
can turn on/off the screen title (if you turned it off, selected a full
screen image and turned on autozoom then use Amiga-N and Amiga-M to move
the screen to front/back without zooming).
2.2.2 Methods tuning
In this menu you can set two options to control the methods to render the
image, both of them will give you control on the accuracy of the
representation. The first one is "Depth", with this voice you can select
how many iterations to take before deciding that a point generates a
series that converges. Keep this number high to have a more accurate
representation of the image, keep it low to have a fast one, note that the
deeper you go into the image the higher will have to be this number to get
a realistic representation. If you have yet completed the image and raise
the number of iterations a requester will pop-up asking if you want to
update instead of redrawing, if the internal color is solid and the Buffer
is on will be able to choose either "Fast" or "Exact", unless the number
of iterations is too high you'd better select "Exact", if the internal
color is not solid but the buffer is on you'll be able to select only
"Exact" or no update. The second voice concerning representation is
"Blocks", it allows you to set how big the blocks will be and so how many
passes will the image take to complete, from V1.3 of Smart you may also
select "Tesselate". If you turn tesselation on the screen will be divided
in two blocks, each block will be divided into two smaller blocks and so
on, this may introduce a BIG error in some cases and may be error-free in
others, the problem is that with this mode an area surrounded by pixels of
the same color is considered to be filled with that color, this would be
true if pixels had no size, but may cause approximation in real life. You
may also select to use the 'traditional' blocks, this gives you control on
the degree of approximation in drawing the image, the bigger the blocks,
the faster will be the rendering and the more you are like to lose some
details. This option should be used with care as it has a big potential,
there are zones where setting the blocks to 8x8 will not affect the
quality of the image but will speed up its generation more than 10 times,
in other zones even setting the 2x2 option will give you a quite
inaccurate representation of the image and will not be significantly
faster than the pixel-perfect 1x1 mode. There is no way to tell what the
best block size is, generally 4x4 should not affect significantly the
image integrity but will give a great speed improvement. If you use the
8x8 option be careful to set a higher number of iterations to compensate
the possible imprecisions.
2.2.3 Zoom control
There are four voices concerning zooming in this menu. The first one is
"zoomrate", it allows you to set how much you will zoom, that is how much
of the zone around the point you selected will be zoomed. The second one
is "autozoom", just select "on" or "off". If you turn it on each time you
want to zoom you'll just have to click in the center of the zone you wish
to zoom and the zoom will take automatically place even if you did not
select the voice "zoom". The voice "zoom" is used when the autozoom
feature is off to zoom in a zone, just select this voice and than click in
the center of the zone you want to see, if you want to cancel the zoom
just click outside of the image or press the right mouse button. The last
option "unzoom" lets you zoom off the current image, just select it and
the image will be recalculated automatically without further actions.
2.2.4 Misc controls
There are four more toggles providing generic controls on the setup. This
toggles are "Autoredraw", "Pack iff", "Be quiet" and "Toolbar", the first
one let's you disable the auto-update function that redraws the image
after any change in the settings, when this is off the redraw will happen
only if the screen had been rebuilt and the image disappeared. The second
toggle is to turn on/off the iff compression (see above for more infos).
When the "Be quiet" switch is on you won't be prompted before overwriting
existing files and you won't be presented a requester once the drawing had
terminated (this will also turn off the screen-to-front feature). The last
toggle is "Toolbox" and when activated (by default) will turn on the
toolbar.
2.2.5 Buffers
The last option in this menu is "Buffers", you may turn it off or on as
all toggles. When you turn it on you'll get a requester asking if you want
full buffering or 3DOnly buffering. If you select "3DOnly" you'll be able
to see the 3D Overlay once the drawing has been completed, and will also
be able to use the Update functions (more iterations of different type of
coloring), turning on "3DOnly" will not slow down significantly the
calculations (about 0.5-2 secs). If you select a "Full" buffer, you'll get
by default the 3D Buffer but you'll also get the color buffer, when it is
active you may change the internal/external coloring method and get the
screen updated immediately, this will unfortunately slow down the drawing
a lot, from 2 to 40 secs !!!. If you know in advance that the drawing will
take a big amount of time and have enough memory you'd better turn full
buffer on, else, if you are just browsing, you'd better turn on only the
3DBuffer. Please note that the buffers are allocated when you start
drawing so don't worry if the info window says that there's no buffer,
also note that turning the buffers off will also free the allocated mem
immediately.
2.3 Math
This menu contains all the voices that involve direct control of
mathematical aspects of the drawing.
2.3.1 Editing parameters
As Smart features parametric fractals (Julia, Volterra-Lotka, Julia
Parameter plane and Lyapunov space) it also enables you to specify the
value of these parameters. Julia, JuliaPP and Volterra do use 2
parameters, in the Julia sets the parameter is a complex number and
indicates a point of the corresponding Mandelbrot set, if while examining
the Mandelbrot set you wish to pick a point and set the Julia parameters
to that point just select the "set point" voice and click in the
Mandelbrot set on the point you wish to use (Tip: just after setting the
point switch to the Julia set, you'll get a view of the same window as it
appears in the Julia set and it will look similar to the region you picked
the point from, the nearer to the point you'll go the lesser the
differences will be :-). However you may know some values (maybe you have
a book) and want to introduce them manually, if so just choose the
"edit point" option and you'll get a requester asking for the real part of
the parameter and then for the imaginary one. If you changed your mind and
no longer want to edit the parameters just hit return twice. Maybe you got
also the coordinates of the window you have to zoom, if so just choose the
"edit window" voice and enter the value you wish to use (once again press
return to keep the actual values). Note that the window requester will not
allow you to specify all the four values as you may have expected, this is
because Smart does not want you to get weird image aspect (after all who
wants a Mandelbrot set that looks deformed ??). A different approach
should be used for Lyapunov space, here you may set the sequence and the
color divide. The color divide is a number that says how much shoul the
palette be spreden around, the higher, the lesser you'll be like to see
the same color used twice, the lower, the more you'll be able to
distinguish potential of points. To set the color divide just select "edit
point", you'll be prompted a number (by default the old value). The second
parameter is the sequence to be used generating Lyapunov space, this is a
sequence of 'A' and 'B' (no matter the case), each letter in this sequence
has the following meaning : 'A' means that the 'x' value should be used in
the iteration, 'B' means that the 'y' value should be used. So if you
select 'ABB' the first iteration will use 'x' as parameter, the second and
third will use 'y' and than the sequence will repeat (the fourth will use
'x', the fifth and sixth will use 'y' etc...). So don't use a sequence
with more letters than the iterations as this has no meaning, also note
that even if the number of iterations should be big to let the succession
converge you may leave it low to get nice pictures (this is what's done in
Lyapunovia), after all you want to create nice pictures, if you wanted to
examine population dynamics you'd have used something less fun !
If you want to make a 3DOverlay or have made it yet and want to change
it's appearance you may "Set 3D Opts", you'll be asked level % of the
plateou and the reduction, the first means how many iterations will be in
the graduated part (if you set 50% and have 719 iterations the points
exiting with 0-359 iterations will hav different heights and the points
with 360-719 iterations will be part of the plateou). The reduction level
is used to adjust the height of the 3DOverlay, by default if will be :
height=(maxiterations * (level%))/Reduction.
2.3.2 Selecting the fractal type
This is easily done by selecting the "set fractal" voice and then by
choosing the fractal you prefer. Mandelbrot and Julia are the classical
ones found in almost any fractal generator, Volterra-Lotka is fractal
taken from the book I have (see bibliography for more informations),
Inverted Mandelbrot and Inverted Julia are the Mandelbrot and Julia sets
projected into an inverted space (again see bibliography). Than there are
Julia Parameters plane and Inverted Julia Parameters Plane, Mandelbrot is
the Julia Parameters Plane of the origin of the Gauss plane (0+0i), here
you may choose to generate Parameter Planes of other points. Finally
there's Lyapunov Space, this one is like the one found in Lyapunovia and
is basicaly the logistic equation for a single population drawn changing
the maximum population between an iteration and the other (see previous
paragraph). When you set the fractal type you may want either to redraw
(Mandelbrot->Julia->JuliaPP) or to restart (Mandelbrot->Volterra->Lyapunov
etc...), a requester will pop-up, just selcet what you prefer.
2.3.3 Determining the type of math
While exploring fractals one of the most important problems is to choose
a precision that enables to draw an image that is free of defects, but at
the same time it's important not to exaggerate not to slow down too much
the calculation (I won't tell how long does a double precision image take
to render in 640x512 on an A500 but know that I care too much for my
computer to risk leaving it on the whole night). So you'll surely
comprehend that the more precisions are available the better it is. Some
programs (ehrm... Actually I know only of Mand2000 that's a commercial
program!) do offer special routines to handle almost any precision but
you'll usually find that even on fast machines (68040 33Mhz I mean!) any
precision higher than the extended FPU precision will result quite too
slow to use in non-background situations. Smart offers you 6 different
precisions, they are (in order from the fastest to the most precise):
Turbo integer, integer, big integer, floating point, double precision and
extended FPU precision. The first five are available to anyone on any
machine, the sixth one is only available to FPU owners and 68040 owners
with fpu-patches (see below). Smart offers you to do the selection work
for you, just choose the "auto" option and you'll never have to worry
about the type of math used (Tip: when drawing the starting image of an
inverted Julia force the precision to integer, the zones near to the
borders will be pixelized but the effect may be fine (I like it!) and it
will also be faster (unless you have an FPU!), Smart had been designed to
be as precise as reasonable so I did not set that tip into the program as
default). Please note that if you are drawing a zone on the border of an
inverted Julia that is quite big (the set not the region!) Smart may get
confused and select the wrong precision, you'll notice it as you'll get a
pixelization effect! In these cases you can use the other options of the
"precision" voice to force Smart to use a specific precision, note that
you cannot force the Turbo integer precision as it's useful only on some
occasions and Smart will activate it automatically while using the 'auto'
mode, also note that if you don't have an FPU and try to force the FPU
routines Smart will complain, if you decide to go ahead anyway expect your
machine to crash as I wrote the FPU routines in assembler using directly
the coprocessor istructions and not the library calls that are too slow
(but useful if you need to write a single source that uses either the
emulation routines either the FPU, in this case I wrote a separate code
for processor-based calculation and so there's no reason to use
libraries). Tech note on how Smart decides the precision to use: While
developing Smart I assumed that anyone owning an FPU also owns a processor
that will compute faster in integer (and turbo integer!) than the FPU
(that's true if you have a 68020 or more, if you have a FPU and a 68010 or
less always force the precision to FPU, by the way: why did you do such a
strange thing as connecting a 32 bit FPU to a 16 bit bus ?). Note to 68040
owners: Before using Smart you must run a system patcher to trap the
line-f exceptions generated by the FPU istructions not supported by 68040
internal FPU, once done this (you probably yet installed it in the startup
:-) you can safely run Smart and enjoy your machine's FPU speed!, if you
don't install the patch you'll still be able to use Smart but you won't be
able to use FPU mode.
2.3.4 Regenerating the image
There are two options to regenerate the image, the first one is "redraw"
and will redraw exactly the selected window with the selected parameters,
this is useful when after changing the coloring methods you want to
regenerate the image with the new routines. The second option is "restart"
and as you'll have guessed selects the default starting window for the
selected type of set before redrawing. If the 3DBuffer is active but you
closed the 3DOverlay window and want it back, just edit 3DParametes, keep
them as they are and you'll get the 3DOverlay back.
2.4 Colors
As beauty is a subjective idea people may wish to change the appearance
of the fractals on the screen, this menu does this but it also allows you
to select the coloring methods of internal and of the external part of the
various sets. Note that this is not just an exterior change as the
different methods give different informations on the behaviour of the
single points.
2.4.1 File operations
The two voices "save" and "load" allow you to save and load the whole
color palette used by the program (all 256 colors) in iff format so that
you'll be able to use palettes edited in your favourite drawing package.
2.4.2 Palette editor
Just choose "edit" from the menu and you'll be faced with the standard
color requester of the ReqTools library, freely edit the palette and than
choose 'ok' or 'cancel' to confirm the changes or to discard them.
2.4.3 Choosing the rendering methods !!
As I wrote before, this is the main difference with all the other fractal
generators I could find on Amiga, Smart can assign a color also to points
internal to the set !. There are two menus concerning this options, the
first one is "external" that allows you to specify the type of coloring
you want in the external regions. Here you have six choices: "Solid",
"Smooth", "Binary", "2Binary", "Checked1" and "Checked2". The first one
will assign to all the points not in the set the same color. The second
one will assign the usual coloring that's based on the speed of divergence
(this evidences the level curves). The third one is the one I talked about
in chapter one, this is a simple method that assigns to each point outside
the set a color depending on where the point was when it exited the limit
circle of divergence, the color depends on the argument of the complex
number, this brings in evidence the Hubbard's angles of various point of
the Mandelbrot and Julia sets. The fourth method is a personal variation
of the third that's based on a different assignment of the colors
depending an the argument. The fifth and sixth are obtained by mixing the
"Smooth" and "Binary" options, they are very impressive if cycled,
otherwise they look almost like "Smooth". The second voice concerning
coloring (and the most important in my opinion :-) is "internal" that lets
you specify five types of coloring, they are: "Solid", "Logarithmic",
"Smooth type 1", "Smooth type 2" and "Logarithmic type 2". The first one
works as the corresponding one in the external menu, the second, third and
fourth one give you an idea of how much difference there is in the module
of point end of its (probable) attractor, the fifth one gives you an idea
of how far the point is from its attractor. The second and the fifth adopt
a logarithmic scale so to allow you to see with the same precision
attractors of different orders, the third and fourth do adopt a corrected
proportional method, that's less efficient than the logarithmic scale but
it's more colorful and in some cases gives you more informations. The most
significant method in terms of math is the fifth one that does its better
to evidence the internal level curves (that's how fast a point gets near
to its attractor), this is the most similar to the one I found on the book
I wrote about in the previous chapter, I cannot be sure if it's the same
but I believe it to be, the real problem is the nature of the attractors
that present a periodical nature, to evidence the biggest number of
attractors the number of iterations should be equal to ((K!)-1) that's a
number too high even with K=10 (K=10 -> depth should be = 3628799, too big
for me!). This is a common problem with all the internal coloring methods,
if you use it just select at least an odd number (that's due to the fact
that on some fractals, like Mandelbrot, the main attractor (that's 0+i0,
the origin of Gauss' plane) is present in all the periodical orbits so
that if you choose an even number all the point will look to be part of
the domain of the origin!.
2.4.4 Cycling
From V1.1 Smart offers the cycling option, you can use the voices of the
"Cycle" item to turn on/off cycling, select the direction of cycleing
(forward or backward) and to speed up or slow down the cycling of the
colors. You can change the direction of cycling while it's on without any
problem. If you stop the cycling the colors will remain the ones of the
moment you stopped it, if you want to revert to the original palette
select the "Reset" option, if you want to let the actual palette be fixed
just select "Edit" and click on "Ok" without modifying anything.
Chapter 3: Other features
3.1 Commands of the toolbar
From V1.2 on Smart features a toolbar that holds buttons for some of the
most used commands, it also offers a couple of functions NOT available
from the menu. The top two gadgets are used to increase/decrease the size
of the zoombox (and so to control the zoomrate), the two just below allow
to zoom/unzoom and the first of the next line let's the user hide the
zoombox (not available from menu). The one immediately on the right let's
the user turn on/off the coordinate disply option, when this option is
active if the cursor passes on the image the coordinates of the
underlaying point will be displayed, this is really useful while using the
"Set point" option. The four buttons below these ones allow the user to
turn on/off the color cycling, change its direction, speed up or slow down
it. There are than two icons to show the information box and the about
message. The last two buttons will let the user save/load everything.
3.2 Keyboard commands
Many menu options do have a keyboard shortcut, and can so be used via
keyboard, however there is a simply trick available only from keyboard, if
autozoom is off and the zoombox is visible you can use the arrow keys to
move it around the image.
3.3 Preferences and setup
If you want Smart to start with your configuration as default you may
save your preferences as "SmartFractal.prefs" either the "S:" directory
either in the same directory of Smart, note: if you run Smart from SHELL
you'll have to save the preferences in the 'current' directory, I.E.: if
you are in directory "HD1:Utils/" and Smart is in directory "HD2:
Utils/Math/SmartFractal" (and it is the path) you can run Smart by typing
"SmartFractal", but if your preferences are not in "HD1:Utils/" Smart
won't use them. So if you frequently use Smart from SHELL you'd better
place the preferences in the "S:" directory. An other feature that will
surely be appreciated by someone is that you can use any image obtained
with Smart as default one, just save it as "SmartFractal.iff" in the same
directory of Smart (the notes for SHELL users about preferences are still
valid).
Another feature that SHELL users will appreciate is that from V1.1 Smart
will auto-detach from the current process, running in background and
letting you close the Shell whenever you want without having to quit
Smart.
Chapter 4: Miscellaneous informations
4.1 How to contact the author
Well, if you have been reading the document you'll probably have also the
program and my contact address but anyway here it is:
Mail to: Simone Avogadro
viale Rimembranze, 33
Appiano Gentile
22070 (CO)
ITALY
E-mail on Internet to: simonea@varano.ing.unico.it
If you cannot access the internet but have access to the Fidonet you can
use a gateway to Internet, if you don't know how to do that ask your
sysop, as I don't have direct access to Fidonet I cannot tell you how to
do it (sorry:-), but note that this method is slow (usually it takes a
month or more for the mail to arrive to me!).
There are no known bugs in Smart but I can't tell if there are not bugs
or if we simply don't now about them :-}, if you find any bug please
report it to me, possibly with a clear description of how to recreate it
(please state the machine configuration you have, etc.). Reporting bugs
helps me to keep the program safe so, expecially if you found a nasty one,
report it to me as soon as possible.
4.2 Improvements
Here I give a list of improvements that I'd like to add to Smart if I
have time (Ie: If I successfully take my exams) and if I feel Smart to be
appreciated (feedback is important, even an E-mail makes the difference!):
o Make use of MUI library for 2.0 users
o Support for xpklibrary de/compression
o A "Pickup" menu so that you can stop drawing, save the partial work
and than pickup your work later (very useful for time-consuming
drawings!)
o A speedup buffer, so you can zoom faster
o Faster rendering routines
o Better color cycling feature
o 3D mapping of fractals (spherical and continuous axonometrical)
o More types of fractals
o More coloring techs
Changes that will take a bit more to be done:
o Arexx support (I got the documentation for it and I will do it as
soon as I have enough time)
o Real-time zoom (like Mand2000)
As you see I have a lot of ideas and so there are a lot of possibilities,
let me know your preferences and if you have any proposal for special
features not mentioned here (please don't just say: "I want Smart to draw
in real time, support custom fractals and display images directly on my
Virtual reality glasses" :-).
4.3 Known bugs
There's only a known bag so far, if you use KS1.3 you may happen to see
timings like 0:00:00. I'm sorry for this, under KS1.3 the timing functions
of the OS are quite inaccurate and I didn't want to write own timing
functions (lazy guy :-).
There's another problem, some precisions may contrast with some drawing
options, so far Volterra and Lyapunov won't work with BigInteger math so
Smart overrides these modes and switches to Float. If you use Tesselation
you won't be able to use Float as Smart will override your options and
switch to Double, this should not be a problem as the use of Float is
quite restricted, infact the difference between BigInteger a Float is
little, so probably you'd have to switch to Double quite soon (a couple of
zooms).
This final one is not a bug but rather an advice. From V1.2 the info
window also displays infos on the machine it detects, CPU+FPU are OK but I
don't know a SAFE way for identifying AGA and so it detects KS3.0+ (AGA
support) and not the chipset.
4.4 History
V1.0 in 14/6/94 : First release
V1.1 in 18/7/94 (Internal) : Never released but really stable.
- When run from CLI/SHELL it now auto detaches and goes in background
- Added two voices to Prefs menu to load separately Options and Spots
- Added the option to compress images with standard Iff method
- Added color cycling
- Added "Be Quiet" toggle
- Added the zoombox
V1.2 in 20/9/94 : No known bugs.
- Added support for any system monitor with a standard Screenmode
requester
- Added a toolbar to make interaction more immediate and intuitive :->
- Added new fractals "JuliaPP" and "Inverted JuliaPP"
- Added 64 bit integer math, about 3-4 times faster than "float" and
90% of the times with equivalent precision, made separate versions
for 68000-010 and 68020+
- Added the ability to show cursor coordinates on the screen title
- Fixed a bug in V1.1 that caused some problems with packed iff
- Now Smart asks for confirmation before overwriting existing files
this feature can be disabled with the "Be Quiet" switch
- Fixed a bug that didn't allow to use more than 65535 iterations with
FPU precision
- Micro-buffering almost halves the time taken to render quite uniform
areas.
V1.3 in 20/1/95 : No known bugs.
- Added the option to import alien preferences, support for:
Mandelmania, MisterM, Lyapunovia, MandelA (not 100%).
- Rewrote some FPU stuff, now 5-10 % faster!
- Added a new set type: Lyapunov Space
- Added 3D buffer, allowing 3D overlay (quite primitive but still
better than nothing :-)
- Added Color buffer, lets you change the coloring method without
having to redraw (when active about 2-40 secs slower :-< ).
- Added "Auto update", if you raise the number of iterations you'll
be able to redraw only a minor part (Idea from Mand2000 :-)
- Added a new drawing mode: Tesselate (Like MisterM, FractInt an
others), about 20-40% faster !
- New 3.0 Look even for KS1.3 owners!
- Finally fixed the 24Bit color support, now you can use 24 Bit colors
in all of their glory!
- Fixed problem with Autoscroll (not active in V1.2!).
- Added AmigaGuide documentation.
- Added some new spots.
- Added a timig feature, now you know exactly how long it took to
complete the image
- Added option to set program priority
4.5 People I wish to thank
Oh, well, there's a lot of people I should thank, so in no particular
order: Mom, dad and my brother for supporting me and being patient, my
friends for their interest and then in particular:
Stefano Volponi for correcting the errors in this text (as you'll have
supposed English is not my native language!)
Donato Corvi for beta-testing on his fat A1200+68030 33Mhz+68882 48Mhz
FPU +8Meg 32Bit fast. Also for letting me work at his home in an attempt
to fix a nasty bug with FPU (finally I caught it!). Most of the awesome
new spots found in V1.2 are due to his research.
Cristiano Preda for beta-testing on his monster (A2000+8Meg 32bit fast,
68040 30Mhz, 2Meg Merlin graphic adapter), and for procuring me the iff
documentation.
Other people I wish to thank:
Fabrizio Sala (sysop of Fast Enough BBS) for spreading (I hope!) Smart on
Fidonet
Nico François for developing the ReqTools library (req.library is cool
but reqtools is cooler!) (if you want to know more about Reqtools read the
SHAREWARE.DOC file)
Enrico M. Ferrari for paying attention to SmartFractal and for his review
on MC MicroComputer
And all the others I forgot!
4.6 Bibliography
The book I wrote about many times in this text is:
H.O.Peitgen - P.H.Richter,"The Beauty of Fractals, Images of Complex
Dynamical Systems",1986, Springer Verlang - Berlin, Heidelberg, New York.
If you have a secondary school preparation and like math you'll be able
to comprehend the principles explained in this book and even if you don't
understand mathematics you'll find the Interventions very interesting as
they are comprehensible by anyone and express interesting philosophical
considerations; you'll also find an interesting appendix on how to write
simple programs to generate fractals, if you are a bit more advanced
there's a section commenting some advanced techs you'll surely find
interesting (even if some do require too much computational power to adapt
them for our amigas). If you are Italian (As I am!) you'll also find the
Italian translation of this book, it's called "La Bellezza dei Frattali"
and is published by Bollati-Boringhieri, I found it to be a good
translation not presenting problems with traslation of mathematical therms
(thanks to the work of Umberto Sampietri).
If you want to read something more practically-oriented you should try to
procure old numbers of "Scientific American" (or translations) that
featured interesting articles about fractals and non-deterministic
dynamics.
If, instead, you are more interested in the mathematical aspect you
should search for a book of B.Mandelbrot that's considered the father of
the modern theory of fractals. I just mention the most known:
Benoit.B.Mandelbrot,"The Fractal Geometry of Nature",1982, Freeman,
San Francisco.
I hope you like Smartfractal and find interesting images that meet your
sense of beauty.
Simone Avogadro